package cn.lyq.card.data.api

import cn.lyq.card.data.model.*
import cn.lyq.card.global.Const
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.Header
import retrofit2.http.POST

interface AchievementService {

    @POST("api/v1/Profit")
    @FormUrlEncoded
    suspend fun getAchievementInfo(
        /** 类型 1日业绩 2.月业绩 3.总业绩*/
        @Field("type") type: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        @Header("token") token: String = Const.token
    ): ResponseInfo<AchievementInfo>

    @POST("api/v1/newAddProfit")
    @FormUrlEncoded
    suspend fun getProfit(
        /** 类型 1日 2.月 3.累计*/
        @Field("type") type: Int,
        /** 类型 1分润收益 2.返现收益 3.收益补贴*/
        @Field("profit_type") profitType: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Header("token") token: String = Const.token
    ): ResponseInfo<IncomeWrapInfo>

    @POST("api/v1/newAddAgent")
    @FormUrlEncoded
    suspend fun getAgentList(
        /** 类型 1日 2.月 3.累计*/
        @Field("type") type: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Field("keyword") keyword: String = "",
        @Header("token") token: String = Const.token
    ): ResponseInfo<MutableList<AgentInfo>>

    @POST("api/v1/agentNewOrder")
    @FormUrlEncoded
    suspend fun getAgentBuy(
        /** 类型 1日 2.月 3.累计*/
        @Field("type") type: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Field("keyword") keyword: String = "",
        @Header("token") token: String = Const.token
    ): ResponseInfo<MutableList<AgentBuyInfo>>

    @POST("api/v1/agentDetailed")
    @FormUrlEncoded
    suspend fun getAgentDetail(
        @Field("agent_id") agentId: Int,
        @Header("token") token: String = Const.token
    ): ResponseInfo<AgentInfo>

    @POST("api/v1/merchantList")
    @FormUrlEncoded
    suspend fun getStoreList(
        /** 类型 1日 2.月 3.累计*/
        @Field("dateType") dateType: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        /** 0.商户列表/1.优质/2.活跃/3.休眠*/
        @Field("type") type: Int = 0,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Field("keyword") keyword: String = "",
        @Header("token") token: String = Const.token
    ): ResponseInfo<ListInfo<StoreInfo>>

    @POST("api/v1/teamMerchantList")
    @FormUrlEncoded
    suspend fun getStoreTeamList(
        /** 类型 1日 2.月 3.累计*/
        @Field("dateType") dateType: Int,
        /** 时间（Y-m-d）*/
        @Field("date") date: String,
        /** 0.商户列表/1.优质/2.活跃/3.休眠*/
        @Field("type") type: Int = 0,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Field("keyword") keyword: String = "",
        @Header("token") token: String = Const.token
    ): ResponseInfo<ListInfo<StoreInfo>>

    @POST("api/v1/merchantDetails")
    @FormUrlEncoded
    suspend fun getStoreDetail(
        @Field("merchant_no") agentId: String,
        @Header("token") token: String = Const.token
    ): ResponseInfo<StoreInfo>

    @POST("api/v1/cashBackCount")
    @FormUrlEncoded
    suspend fun getCashBack(
        /** 1押金 2非押金*/
        @Field("is_deposit") isDeposit: Int,
        @Field("goods_id") goodsId: Int = 0,
        @Header("token") token: String = Const.token
    ): ResponseInfo<MutableList<CashBackStageWrapInfo>>

    @POST("api/v1/cashBackDetails")
    @FormUrlEncoded
    suspend fun getCashBackDetail(
        @Field("level") level: Int,
        @Field("goods_id") goodsId: Int,
        @Field("page") page: Int,
        @Field("pagesize") pageSize: Int,
        @Header("token") token: String = Const.token
    ): ResponseInfo<MutableList<CashBackDetailInfo>>

    @POST("api/v1/goods")
    suspend fun getGoods(
        @Header("token") token: String = Const.token
    ): ResponseInfo<MutableList<DeviceInfo>>
}